GitHubへのpushが「fetch first」と表示されてrejectedとなったときの対処
git pushした時にエラーが発生した場合の対処方法
Gatsbyのブログを作成してた時にまだまだ慣れないGitを使って変更内容をGithubにアップしてるのだが、git pushした際にエラーが発生した。
! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘https://github.com/WakkyFree/binarycutter’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushin
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.
原因はリモートリポジトリーで変更した内容がローカルに反映されていないため、pushができない。
そのため、メッセージに書いてある通りfetchを実行する
git fetch
変更を適用するためにmergeを実行
git merge origin/master
また、エラーが発生
fatal: refusing to merge unrelated histories
調べてみると、どうやら無関係なヒストリをもつ2つのブランチはマージができないらしい。
そのため、上記をmergeするには-allow-unrelated-histories
というコマンドが必要らしい
git merge --allow-unrelated-histories origin/master
を実行
うまくいったと思ったが、なんとさらなるエラーが発生する
Auto-merging config.js
CONFLICT (add/add): Merge conflict in config.js
Automatic merge failed; fix conflicts and then commit the result.
matsumotoyukinoMacBook-Pro:blog mat
うむうむ。どうやらコンフリクトを起こしてるらしい。
git statsu
でステータスを確認すると原因が出てきた
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
new file: content/posts/2019-02-02-test.md
new file: "content/posts/2019-02-02-\343\201\223\343\202\214\343\201\257\343\203\206\343\202\271\343\203\210\343\201\240\343\202\210\343\203\274.md"
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: config.js
config.js
のファイルがリモートとローカルでマージされていないのでaddしろと出てきた
言われた通り以下を実行
git add config.js
git commit -m "2nd commit"
念のため、git status
で確認してcommitができてることを確認
そして、logを確認したが問題なさそうだった
最後に変更内容をリモートにpush
git push origin master
問題なくpushが完了した
この一通りのエラーを通してググったことが功を奏したのかだいぶgitについて理解できた気がする
急がば回れとはいったもんですね〜